package com.atguigu.msmservice.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.atguigu.msmservice.utils.RandomUtil;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.sms.v20210111.SmsClient;
import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;
import java.util.Map;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import com.atguigu.msmservice.service.MsmService;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;


@Service
public class MsmServiceImpl implements MsmService {
   // 腾讯云短信代码（有效可用，收费）
    @Override
    public boolean send(String code, String phone) {
        //判断手机号是否为空
        if (StringUtils.isEmpty(phone)) {
            return false;
        }
        try {
            // 实例化一个认证对象，入参需要传入腾讯云账户secretId，secretKey,此处还需注意密钥对的保密
            // 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取
            Credential cred = new Credential("AKIDlRJzSkrlT4Vp397vsqyv9zjKoNwiQ0Vo", "MYwS1aDmCSYfdOxJVVIwQlyynPo295oJ");
            // 实例化一个http选项，可选的，没有特殊需求可以跳过
            HttpProfile httpProfile = new HttpProfile();
            httpProfile.setEndpoint("sms.tencentcloudapi.com");
            // 实例化一个client选项，可选的，没有特殊需求可以跳过
            ClientProfile clientProfile = new ClientProfile();
            clientProfile.setHttpProfile(httpProfile);
            // 实例化要请求产品的client对象,clientProfile是可选的  第二个参数是地域信息
            SmsClient client = new SmsClient(cred, "ap-guangzhou", clientProfile);
            // 实例化一个请求对象,每个接口都会对应一个request对象
            SendSmsRequest req = new SendSmsRequest();
            //设置固定的参数
            req.setSmsSdkAppId("1400757691");// 短信应用ID: 短信SdkAppId在 [短信控制台] 添加应用后生成的实际SdkAppId
            req.setSignName("尘逸公众号");           //短信签名内容: 使用 UTF-8 编码，必须填写已审核通过的签名
            req.setTemplateId("1589785");//模板 ID: 必须填写已审核通过的模板 ID
            /* 用户的 session 内容: 可以携带用户侧 ID 等上下文信息，server 会原样返回 */
//            String sessionContext = "xxx";
//            req.setSessionContext(sessionContext);

            //设置发送相关的参数
            String[] phoneNumberSet1 = {"+86" + phone};
            req.setPhoneNumberSet(phoneNumberSet1);//发送的手机号
            //生成6位数随机验证码
//            String verificationCode = RandomUtil.getSixBitRandom();
            String[] templateParamSet1 = {code, "5"};//模板的参数 第一个是验证码，第二个是过期时间
            req.setTemplateParamSet(templateParamSet1);//发送验证码
            System.out.println(code);
            //发送短信
            // 返回的resp是一个SendSmsResponse的实例，与请求对象对应
            SendSmsResponse resp = client.SendSms(req);
            System.out.println("resp" + resp);
            // 输出json格式的字符串回包
            System.out.println(SendSmsResponse.toJsonString(resp));
            return true;
        } catch (TencentCloudSDKException e) {
            e.printStackTrace();
            return false;
        }

     }
//    private static final String USER = "1639392840@qq.com"; // 发件人称号，同邮箱地址※
//    private static final String PASSWORD = "chyhktcmjbnnbiaf"; // 授权码，开启SMTP时显示※
//    private static final String mima ="cyt3076502176";//邮箱密码
//    @Override
//    public boolean send(String code, String phone) {
//        //判断邮箱号是否为空
//        if (StringUtils.isEmpty(phone)) {
//            return false;
//       }
//            try {
//                final Properties props = new Properties();
//                props.put("mail.smtp.auth", "true");
////            注意发送邮件的方法中，发送给谁的，发送给对应的app，※
////            要改成对应的app。扣扣的改成qq的，网易的要改成网易的。※
//                props.put("mail.smtp.host", "smtp.qq.com");
////            props.put("mail.smtp.host", "smtp.163.com");
//
//                // 发件人的账号
//                props.put(USER, USER);
//                //发件人的密码
//                props.put(mima, PASSWORD);
//
//                // 构建授权信息，用于进行SMTP进行身份验证
//                Authenticator authenticator = new Authenticator() {
//                    @Override
//                    protected PasswordAuthentication getPasswordAuthentication() {
//                        // 用户名、密码
//                        String userName = props.getProperty(USER);
//                        String password = props.getProperty(mima);
//                        return new PasswordAuthentication(userName, password);
//                    }
//                };
//                // 使用环境属性和授权信息，创建邮件会话
//                Session mailSession = Session.getInstance(props, authenticator);
//                // 创建邮件消息
//                MimeMessage message = new MimeMessage(mailSession);
//                // 设置发件人
//                String username = props.getProperty(USER);
//                InternetAddress form = new InternetAddress(username);
//                message.setFrom(form);
//
//                // 设置收件人
//                InternetAddress toAddress = new InternetAddress(phone);
//                message.setRecipient(Message.RecipientType.TO, toAddress);
//                String text = "您好，您正在使用邮箱注册,验证码为"+code+"。5分钟有效，如若把验证码泄露他人,后果请自行承担";
//                String title = "验证码";
//
//                // 设置邮件标题
//                message.setSubject(title);
//
//                // 设置邮件的内容体
//                message.setContent(text, "text/html;charset=UTF-8");
//                // 发送邮件
//                Transport.send(message);
//                System.out.println("验证码为："+code);
//                return true;
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//            return false;
//        }

    }